Skip to main content
Creates or replaces the DRAFT payment intent on an OPEN order. tenders is the list of payments for this checkout. The array order is sequence. The first real tender (anything except REDEMPTION) is the primary tender. The server computes each tender’s amount and allocation.amounts. Send allocation without amounts. A single real tender may send allocation: null, which means it covers whatever no other tender covers. A REDEMPTION tender always sends allocation: null: it covers an amount, not lines.
Requires a Storefront API access token from Token exchange.
In @fire-spark/storefront, call order.setTenders(tenders). REDEMPTION tenders come from order.applyRedeem with a payment_id, not from this list. order.placeOrder() saves the draft and then places with its intent_id.

Path parameters

Request body

Each tender: collect_at: DEVICE is charged on the device. COUNTER, KIOSK, DOOR, and OTHER are collected in person. Tip and delivery land on the primary real tender. One REDEMPTION tender per payment_id. details.rewards[] lists each reward. Each reward has its amount, and details.amount is the sum of rewards. amount on a redeem is the money total for the whole entry, not per unit, trimmed to its before_taxes cap. The real tenders pay the rest of the order total: with before_taxes (default), at least the taxes.

Response

Returns 200 with the order. The active intent has status: DRAFT, is_mixed: true when there are two or more real tenders, and primary_tender_id set to the first real tender.

Error responses

Payment errors return { "error": "...", "details": { "code": "..." } }. 422 unless noted.